package com.rfid.dao.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import com.rfid.dao.interfaces.RegistroAccesorioDao;
import com.rfid.domain.Accesorio;
import com.rfid.domain.RegistroAccesorio;
import com.rfid.domain.Rol;
import com.rfid.domain.Usuario;


@Repository
@SuppressWarnings({ "rawtypes", "unchecked" })
public class RegistroAccesorioJdbc implements RegistroAccesorioDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	@Override
	public RegistroAccesorio insertar(RegistroAccesorio vo) throws SQLException {
		String SQL = "INSERT INTO registro_accesorio VALUES (?,?,?,?,?,?)";
		int result;
		result = jdbcTemplate.update(SQL, new Object[] { null,vo.getFecha(),vo.getHora(), vo.getMyAccesorio(),
				vo.getMyUsuario(), vo.getObservacion() });
		
		return null;
	}

	@Override
	public RegistroAccesorio eliminar(int idRegistroAccesorio)
			throws SQLException {
		
		return null;
	}

	@Override
	public List<RegistroAccesorio> listarPorUsuario(String IdUSuario)throws SQLException {
		String SQL = "SELECT *FROM registro_accesorio WHERE idusaurio LIKE ?  ";
		List matches = jdbcTemplate.query(SQL, new Object[] { "%" + IdUSuario + "%",
				"%" + IdUSuario + "%" },
				new RowMapper() {
			@Override
			public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
				
				RegistroAccesorio registroAccesorio = new RegistroAccesorio();
				Usuario usuario= new Usuario();
				Accesorio accesorio = new Accesorio();
			
				registroAccesorio.setFecha(rs.getString("fecha"));
				registroAccesorio.setHora(rs.getString("hora"));
				
				accesorio.setIdAccesorio(rs.getInt("idaccesorio"));
				registroAccesorio.setMyAccesorio(accesorio);
				
				usuario.setIdUsuario(rs.getInt("idusuario"));
				registroAccesorio.setMyUsuario(usuario);
				
				registroAccesorio.setObservacion(rs.getString("observacion"));
				
				return registroAccesorio;
			} 
		});
		return (matches.size() > 0 ? (List<RegistroAccesorio>) matches : null);
				
	}}


